﻿#ifndef  SQL_H
#define SQL_H

#include <QVector>
#include <QPointF>
#include <QtSql>
#include <QSqlDatabase>

/*==================================================================
 *    作者：Creater
 *    简介： 数据库操作接口
 *    主页： unix8.net
 *    日期：2014-04-27
/*==================================================================*/


/*!
 * 用于在查询表的回调槽函数时能够作为参数
 * */
typedef QVector<QPointF> MyVector;
Q_DECLARE_METATYPE(MyVector)

/*!
  * MYSQL操作类
*/
class SQL
{
private:
    QSqlDatabase db;
    //当前的表
    QString table;
    //当前数据库
    QString dbname;
    //用于select返回结果集
   // MyVector vec;
    QString user;
    QString passwd;
    bool isOpened;

	bool createDataTable(const QString &_table);
	bool createSensorTable(const QString &_table);
	bool createStationTable(const QString &_table);
public:
    ~SQL(){ db.close(); }
    SQL()
    {
        db = QSqlDatabase::addDatabase("QMYSQL");/*vec.reserve(1441);*/
        isOpened = false;
    }
	bool getSQLOpenStatus(){
		return isOpened;
	}
    void setDb(const QString  _dbname, const QString _user, const QString _passwd);
    bool openDb();
    bool changeDb(const QString _dbname);
    bool createDb(const QString _dbname);
	bool creatTable();
    bool insertData(const QString &_table, const QString &intime, uint id, int stationNo, int sensorNo,float d);
	bool insertSensorType(const QString &_table, int id, int type, QString &note);
	bool insertStations(const QString &_table, int id, int no, int sensorNums, QString &tel);
	bool execSql(QString &s);
#if 0
    MyVector& selectTable(QString table, int& s);
    MyVector&  getResult();
#endif
    SQL(QSqlDatabase& db_):db(db_){ /*vec.reserve(1441);*/}
};
#endif

